import { defineConfig } from 'vite';
import path from 'path'
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],
  server: {
    host: 'localhost',
    port: 5173, // 指定开发服务器端口，方便团队协作时统一
    proxy: {
      // API 代理配置 - 转发到本地后端服务
      '/api': {
        target: 'http://localhost:8888',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
        // 配置调试日志，便于排查代理问题
        configure: (proxy, options) => {
          proxy.on('error', (err, req, res) => {
            console.log('代理错误:', err);
          });
          proxy.on('proxyReq', (proxyReq, req, res) => {
            console.log('正在发送代理请求:', req.method, req.url);
          });
        }
      },
      
      // OSS 资源代理配置 - 转发到阿里云 OSS
      '/test': {
        target: 'https://tengyuxin-bucket.oss-cn-beijing.aliyuncs.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/test/, ''),
        // 确保使用 HTTPS 协议
        secure: true,
        // 配置缓存控制
        headers: {
          'Cache-Control': 'no-cache'
        }
      }
    },
    // 开发服务器错误处理
    fs: {
      strict: true // 防止未经授权的文件访问
    },
    // 启用 HMR 客户端日志，便于调试
    hmr: {
      clientPort: 5173,
      overlay: true
    }
  },
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src') // 配置 @ 别名
    }
  },
  // 生产环境构建配置
  build: {
    chunkSizeWarningLimit: 1000, // 提高块大小警告阈值
    rollupOptions: {
      output: {
        // 优化生成的静态资源文件名
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      }
    }
  }
});